//
// Created by wlly-lzh on 24-5-24.
//
#ifndef DATA_STRUCTURE_TASK_HUFFMAN_H
#define DATA_STRUCTURE_TASK_HUFFMAN_H

#include "file.h"
#include <stdbool.h>
#include <string.h>

int create_huffman(head * H,int Size);
// 根据head数组创建哈夫曼树
// Size为元素的数量
// 返回根结点的索引位置

void Root(storage_tree * T,int * num);
// 返回哈夫曼表的根结点位置
// 要求：表首不为多余结点，且已经树化

void create_index(head * H,fast_index * I,int root);
// 初始化快速索引
// root - 根结点的索引

bool find_element(storage_tree * tree,int * addr,char ch,unsigned char * find);
// 按照给出的编码在哈夫曼树中查找元素
// addr - 用于标记当前位置 (第一次时请赋值为起始索引)
// ch   - 单次输入的编码
// ch ='0',左子树; ch='1'，右子树
// 如果找到了，给find赋值，返回true
// 否则，返回false


#endif //DATA_STRUCTURE_TASK_HUFFMAN_H
